# 设置基础镜像alpine
FROM alpine:latest
# 设置创建镜像的作者信息
MAINTAINER JPhoebe
# 镜像填写元数据metadata信息
LABEL version="1.0"
LABEL description="Dockerfile Base (include: jre8_171, tomcat9_10)"
# 更新Alpine的软件源为国内（清华大学）的站点，因为从默认官源拉取实在太慢了。。。
RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/main/" > /etc/apk/repositories
# 更新源
RUN apk update && apk upgrade
# 更新apk-tools
RUN apk add --no-cache apk-tools
# 安装bash
RUN apk add --no-cache bash \
        bash-doc \
        bash-completion \
        && rm -rf /var/cache/apk/* \
        && /bin/bash

# Alpine安装 Glibc https://github.com/sgerrand/alpine-pkg-glibc（jdk依赖）
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.27-r0/glibc-2.27-r0.apk && \
    apk add glibc-2.27-r0.apk \
    && rm -rf glibc-2.27-r0.apk

# 下载jre && 安装Jre
RUN cd /usr/local/
RUN wget -q --header "Cookie: oraclelicense=accept-securebackup-cookie" -P /usr/local/ http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jre-8u171-linux-x64.tar.gz
RUN tar -zxvf /usr/local/jre-8u171-linux-x64.tar.gz -C /usr/local/ && rm -rf /usr/local/jre-8u171-linux-x64.tar.gz
## 配置jdk环境变量
ENV JAVA_HOME=/usr/local/jre1.8.0_171
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH

# 下载tomcat && 安装tomcat
# 安装tomcat
RUN cd /usr/local/
# 官方地址：http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz
RUN wget -P /usr/local/ http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.10/bin/apache-tomcat-9.0.10.tar.gz
RUN tar -zxvf /usr/local/apache-tomcat-9.0.10.tar.gz -C /usr/local/ && rm -rf /usr/local/apache-tomcat-9.0.10.tar.gz
# 暴露tomcat的端口
EXPOSE 8080

# 新建容器启动脚本
# 安装vim
#RUN apk add --no-cache vim
# 创建脚本并授予执行权限
RUN touch /home/start.sh && chmod u+x /home/start.sh
# 在文本中写入脚本命令
RUN echo "sh /usr/local/apache-tomcat-9.0.10/bin/startup.sh" > /home/start.sh
#RUN echo "other cmd" >> /home/start.sh

# 启动执行命令，仅能有一条
# tail -f /dev/null 防止shell执行完后容器就退出的问题
CMD /home/start.sh && tail -f /dev/null

# docker通过Dockerfile创建并启动镜像命令
# docker build -t <标签名> <Dockerfile所在的目录地址>
# docker run -itd -p <物理机端口>:<容器端口> <标签名/镜像id>

# 进入容器( 需要安装bash，并且需要启动容器 )
# docker exec -it <容器id> /bin/bash


